package cn.tedu.sp03.user.service;

import cn.tedu.sp01.pojo.User;
import cn.tedu.sp01.service.UserService;
import cn.tedu.web.util.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import com.fasterxml.jackson.core.type.TypeReference;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;

import java.util.List;
@RefreshScope  //刷新到新的配置数据后，把新的配置信息重新注入到对象中
@Service
@Slf4j
public class UserServiceImpl implements UserService {
    //把yml中配置的属性值注入到这个变量中
    @Value("${sp.user-service.users}")
    private String userJson;
    @Override
    public User getUser(Integer userId) {
        log.info("userId"+userId+", userJson="+userJson);
        // json转换：把 userJson 转换成 List<User>
        List<User> list = JsonUtil.from(userJson, new TypeReference<List<User>>() {});
        for (User u : list) {
            if (u.getId().equals(userId)) {
                return u;//找到用户直接返回
            }
        }

        //如果不是测试用的用户数据，返回一个写死的用户数据
        return new User(userId, "name-"+userId, "pwd-"+userId);
    }

    @Override
    public void addScore(Integer id, Integer score) {
        // 这里增加积分
        log.info("增加用户积分，userId="+id+"， score="+score);
    }
}
